启动服务器,监听所有TCP/UDP
端口,函数原型:
bool Server->start()
- 启动成功后会创建
worker_num
+2
个进程。Master
进程+Manager
进程+serv->worker_num
个Worker
进程。 - 启动失败会立即返回
false
- 启动成功后将进入事件循环,等待客户端连接请求。
start
方法之后的代码不会执行 - 服务器关闭后,
start
函数返回true
,并继续向下执行
设置了
task_worker_num
会增加相应数量的Task
进程
函数列表中start
之前的方法仅可在start
调用前使用,在start
之后的方法仅可在onWorkerStart
、onReceive
等事件回调函数中使用
主进程内有多个Reactor
线程,基于epoll/kqueue
进行网络事件轮询。收到数据后转发到Worker
进程去处理
对所有Worker
进程进行管理,Worker
进程生命周期结束或者发生异常时自动回收,并创建新的Worker
进程
对收到的数据进行处理,包括协议解析和响应请求。未设置worker_num
,底层会启动与CPU
数量一致的Worker
进程。
启动失败扩展内会抛出致命错误,请检查php error_log
的相关信息。errno={number}
是标准的Linux Errno
,可参考相关文档。
如果开启了log_file
设置,信息会打印到指定的Log
文件中。
如果想要在开机启动时,自动运行你的Server
,可以在/etc/rc.local
文件中加入
/usr/bin/php /data/webroot/www.swoole.com/server.php
推荐使用systemd
或supervisor
实现服务管理。
bind
端口失败,原因是其他进程已占用了此端口- 未设置必选回调函数,启动失败
PHP
代码存在致命错误,请检查PHP
错误信息php_errors.log
- 执行
ulimit -c unlimited
,打开core dump
,查看是否有段错误 - 关闭
daemonize
,关闭log
,使错误信息可以打印到屏幕